﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using Suspiros_ObjetosNegocio;

namespace Suspiros_Persistencia
{
    public class UsuarioDAO
    {
        Conexion conn = new Conexion();

        //Obtener suario por email y password;
        public DataSet obtenerUsuario(Usuario usuario)
        {
            SqlDataAdapter miDA = new SqlDataAdapter();
            DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_loginUsuario", miConn);
            //cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            //cmdSP.Parameters.AddWithValue("@accion", 4);
            cmdSP.Parameters.AddWithValue("@email", usuario.Email);
            cmdSP.Parameters.AddWithValue("@password", usuario.Password);
            //Resultados
            miDA.SelectCommand = cmdSP;
            miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            miDA.Fill(miDataSet, "Usuario");
            miConn.Close();
            return miDataSet;
        }

        //Agrega un nuevo usuario y devuelve su id;
        public Object agregaUsuario(Usuario usuario)
        {
            //SqlDataAdapter miDA = new SqlDataAdapter();
            //DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_agregarUsuario", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            //cmdSP.Parameters.AddWithValue("@accion", 1);
            cmdSP.Parameters.AddWithValue("@Nombre", usuario.Nombre);
            cmdSP.Parameters.AddWithValue("@apellidoP", usuario.ApellidoP);
            cmdSP.Parameters.AddWithValue("@apellidoM", usuario.ApellidoM);
            cmdSP.Parameters.AddWithValue("@fechaNac", usuario.FechaNac);
            cmdSP.Parameters.AddWithValue("@email", usuario.Email);
            cmdSP.Parameters.AddWithValue("@telefono", usuario.Telefono);
            cmdSP.Parameters.AddWithValue("@rol", usuario.Rol);
            cmdSP.Parameters.AddWithValue("@fechaReg", usuario.FechaReg.ToString("mm/dd/yyyy"));
            cmdSP.Parameters.AddWithValue("@password", usuario.Password);
            //Resultados
            //miDA.SelectCommand = cmdSP;
            //miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            //miDA.Fill(miDataSet, "Int32");
            Object idUser = cmdSP.ExecuteScalar();
            miConn.Close();
            return idUser;
        }

        //Actualiza un usuario
        //public bool actualizaUsuario(Usuario usuario)
        //{
        //    SqlConnection miConn = conn.getConexion();
        //    SqlCommand cmdSP = new SqlCommand("sp_usuarios", miConn);
        //    cmdSP.CommandType = CommandType.StoredProcedure;
        //    //valores
        //    cmdSP.Parameters.AddWithValue("@accion", 3);
        //    cmdSP.Parameters.AddWithValue("@Nombre", usuario.Nombre);
        //    cmdSP.Parameters.AddWithValue("@apellidoP", usuario.ApellidoP);
        //    cmdSP.Parameters.AddWithValue("@apellidoM", usuario.ApellidoM);
        //    cmdSP.Parameters.AddWithValue("@email", usuario.Email);
        //    cmdSP.Parameters.AddWithValue("@telefono", usuario.Telefono);
        //    cmdSP.Parameters.AddWithValue("@rol", usuario.Rol);
        //    cmdSP.Parameters.AddWithValue("@fechaReg", usuario.FechaReg);
        //    cmdSP.Parameters.AddWithValue("@password", usuario.Password);
        //    //Resultados
        //    int result = cmdSP.ExecuteNonQuery();
        //    //verifica si se actualizo o no
        //    if (result != 0) return true;
        //    else return false;
        //}

        ////Obtener todos los usuarios
        //public DataSet obtenerUsuarios(string campo)
        //{
        //    SqlDataAdapter miDA = new SqlDataAdapter();
        //    DataSet miDataSet = new DataSet();
        //    SqlConnection miConn = conn.getConexion();
        //    SqlCommand cmdSP = new SqlCommand("sp_usuarios", miConn);
        //    //cmdSP.CommandType = CommandType.StoredProcedure;
        //    cmdSP.Parameters.AddWithValue("@campo", campo);
        //    //Resultados
        //    miDA.SelectCommand = cmdSP;
        //    miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
        //    miDA.Fill(miDataSet, "Usuario");
        //    return miDataSet;
        //}

        public DataSet obtenerUsuarios(string campo)
        {
            string consulta = "select * from usuarios order by " + campo + " Asc";
            SqlDataAdapter miDA;
            DataSet miDataSet = new DataSet();
            miDA = new SqlDataAdapter();
            miDA.SelectCommand = new SqlCommand(consulta, conn.getConexion());
            miDA.SelectCommand.CommandType = CommandType.Text;
            miDA.Fill(miDataSet, "Usuario");
            return miDataSet;
        }

        public void eliminarUsuario(int idUsuario)
        {
            //SqlDataAdapter miDA = new SqlDataAdapter();
            //DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_eliminarUsuario", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", idUsuario);
            //Resultados
            //miDA.SelectCommand = cmdSP;
            //miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            //miDA.Fill(miDataSet, "Int32");
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        public void actualizarUsuario(Usuario usuario)
        {
            //SqlDataAdapter miDA = new SqlDataAdapter();
            //DataSet miDataSet = new DataSet();
            SqlConnection miConn = conn.getConexion();
            SqlCommand cmdSP = new SqlCommand("sp_actualizarUsuario", miConn);
            cmdSP.CommandType = CommandType.StoredProcedure;
            //valores
            cmdSP.Parameters.AddWithValue("@id", usuario.Id);
            cmdSP.Parameters.AddWithValue("@Nombre", usuario.Nombre);
            cmdSP.Parameters.AddWithValue("@apellidoP", usuario.ApellidoP);
            cmdSP.Parameters.AddWithValue("@apellidoM", usuario.ApellidoM);
            cmdSP.Parameters.AddWithValue("@email", usuario.Email);
            cmdSP.Parameters.AddWithValue("@telefono", usuario.Telefono);
            cmdSP.Parameters.AddWithValue("@rol", usuario.Rol);
            cmdSP.Parameters.AddWithValue("@password", usuario.Password);
            //Resultados
            //miDA.SelectCommand = cmdSP;
            //miDA.SelectCommand.CommandType = CommandType.StoredProcedure;
            //miDA.Fill(miDataSet, "Int32");
            cmdSP.ExecuteNonQuery();
            miConn.Close();
        }

        //public string SP(int accion, Usuario usuario)
        //{
        //    SqlConnection miConn = conn.getConexion();
        //    SqlCommand cmdSP = new SqlCommand("sp_usuarios", miConn);
        //    cmdSP.CommandType = CommandType.StoredProcedure;
        //    cmdSP.Parameters.AddWithValue("@accion", accion);
        //    if (accion == 2)
        //    {//baja 
        //        cmdSP.Parameters.AddWithValue("@id", usuario.id);
        //    } else if (accion == 4)
        //    {
        //        cmdSP.Parameters.AddWithValue("@id", usuario.id);
        //        cmdSP.Parameters.AddWithValue("@password", usuario.password);
        //    } else if (accion == 5)
        //    {

        //    }
        //    else
        //    {//alta o cambio 
        //        cmdSP.Parameters.AddWithValue("@id", usuario.id);
        //        cmdSP.Parameters.AddWithValue("@Nombre", usuario.Nombre);
        //        cmdSP.Parameters.AddWithValue("@apellidoP", usuario.apellidoPaterno);
        //        cmdSP.Parameters.AddWithValue("@apellidoM", usuario.apellidoMaterno);
        //        cmdSP.Parameters.AddWithValue("@email", usuario.email);
        //        cmdSP.Parameters.AddWithValue("@telefono", usuario.telefono);
        //        cmdSP.Parameters.AddWithValue("@rol", usuario.rol);
        //        cmdSP.Parameters.AddWithValue("@fechaReg", usuario.fechaRegistro);
        //        cmdSP.Parameters.AddWithValue("@password", usuario.password);
        //    }
        //    try
        //    {
        //        cmdSP.ExecuteNonQuery();
        //        if (accion == 1)
        //            return "Alumno dado de alta:" + tblalumno.Id;
        //        else
        //            if (accion == 2)
        //                return "Registro borrado: " + tblalumno.Id;
        //            else
        //                return "Datos del alumno " + tblalumno.Id + " modificado";
        //    }
        //    catch (Exception ex)
        //    {
        //        return "Los siguientes errores ocurrieron" +
        //        ex.Message;
        //    }
        //    finally
        //    {
        //        miConn.Close();
        //    }
        //}
    }
}
